package ai.exemples;

import org.encog.ml.data.MLDataPair;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.data.basic.BasicMLDataSet;

public class MLDataSetFactory {
	
	/** Factory de Pair */
	private MLDataPairFactory factory;

	public MLDataSetFactory(MLDataPairFactory factory) {
		super();
		this.factory = factory;
	}
	
	/**
	 * Construir le dataset à partir des fichiers de la factory
	 * @param size Le nombre de fichier de ce dataset
	 * @return le dataset rempli avec les exemple contenu dans le fichier
	 * @throws NotEnoughDataInFilesException Si le fichiers ne contient pas assez d'exemple
	 */
	public MLDataSet getDataSet(int size) throws NotEnoughDataInFilesException{
		MLDataSet set = new BasicMLDataSet();
		for (int i = 0; i < size; i++) {
			MLDataPair pair = factory.getPair();
			if (pair != null) {
				set.add(factory.getPair());
			} else {
				throw new NotEnoughDataInFilesException();
			}
		}
		factory.destroy();
		return set;
	}
	
	/**
	 * Construir le dataset à partir de tous les exemples des fichiers de la factory
	 * @return le dataset rempli avec les exemple contenu dans les fichiers
	 */
	public MLDataSet getDataSet() {
		MLDataSet set = new BasicMLDataSet();
		MLDataPair pair;
		while ((pair = factory.getPair()) != null) {
			set.add(pair);
		}
		factory.destroy();
		return set;
	}
	
	
}
